<?php
    //1.定义命名空间与本文件所在目录层级相同（houdunwang\view）
    //2.因为composer自动载入类的需要
    //3.命名空间namespace之前不能有输出！
    namespace houdunwang\view;
    //1.定义生成视图的类View
    //2.包含__call及__callStatic方法
    //（当访问该类无法访问的方法时将去基类Base中去寻找相应的方法）
    //3.该类未来可能包含其它供生成视图的方法
    class View{
        //定义当调用无法访问的方法时自动执行的函数
        public function __call($funcName, $arguments){
            //1.call_user_func_array的第二个参数$arugments要填上
            //因为如果在app/home/controller/student.php中的index()方法调用
            //echo View::make()->with(compact("a","b"))时不会出问题，因为执行make()方法后就相当
            //于变成echo (new Base)->with(compact("a","b"))此时不经过本文件的__call方法，不填写$arguments没关系
            //但是如果这种调用：echo (new View)->with(compact("a","b"))->make()的话，
            //此时会经过本文件的__call方法，而如果没有$arguments的话，compact()的值（数组）传不过去
            //则在Base.php中的with()方法会报错
            //2.return将结果（对象）返回到Entry类，经过Entry类中index方法的echo 对象
            //将调用Base类中的__toString()方法从而载入模板文件及传递参数
            //（extract()分割经compact()处理过的参数供模板页面调用）
            return call_user_func_array([new Base,$funcName],$arguments);
        }
        //定义当调用无法访问的静态方法时自动执行的函数
        public static function __callStatic($funcName, $arguments){
            return call_user_func_array([new Base,$funcName],$arguments);
        }

    }